Modern software typically involves many components often developed by large teams of software developers. The days of procedural programming in which a single developer could write an application that simply executed from start to finish performing a single, well-defined task are gone. A software developer often uses libraries, components, frameworks, and other bodies of code written by other developers. The chances for mistakes or misunderstanding how to use a particular external function or module are higher than ever.
Software today also often involves the use of one or more multimedia hardware devices, such as webcams and microphones. Increasingly, application frameworks are including access to multimedia devices. For example, MICROSOFT™ SILVERLIGHT™ 4 introduced webcam and microphone access to applications using that platform. Unfortunately, inclusion in the framework does not necessarily simplify a testing matrix for verifying correct software functionality.
Application testing and verification usually involves using software in a variety of real-world conditions to ensure that the software behaves correctly. Software testers often develop comprehensive suites of test passes that each verify that the software provides an expected response under one or more conditions. The conditions may include normal conditions as well as edge cases, input that should be recognized as invalid, and so forth.
The number of vendors now making multimedia devices and a wide-ranging set of capabilities make it more and more difficult for application developers to test the functionality of software that uses multimedia devices. Testing applications with each type of hardware is an expensive, time consuming, and difficult undertaking that is likely to delay introduction of new features and distribution of application updates. Setting up a testing environment that can handle the broad ranging set of real world conditions involves expensive hardware, running the test multiple times, or manual user intervention. For example, a test lab with 150 machines testing software for which there are even 10 models involves buying and installing large amounts of hardware.